<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // arguments => => 是函数的内置参数(每个函数都有) => 函数调用实际参数的集合
    // this  => 是函数的内置参数(每个函数都有) => 指向函数在调用时依存的对象

    // this的常见指向:
    // 1. 普通函数(普通的命名函数 和 匿名函数) 调用时this默认指向window
    // 2. 函数调用时属于谁, 就指向谁    => obj.fn  btn.onclick  (this->墙头草, 谁调用它,它就指向谁)

    // function fn() {
    //     console.log(this);
    // }

    // console.log(fn);
    // console.log(window.fn);
    // fn();
    // window.fn();

    // var fn = function () {
    //     console.log(this);
    // }

    // fn();

    // (function () {
    //     console.log(this);
    // })()

    // -------------------------------------
    // 函数可以理解为是一个特殊的对象 

    function fn() { // window
        console.log("this", this);
    }

    var arr = [1, 2, 3, fn]; //将函数的引用 赋值给数组arr


    var obj = {
        a: 1,
        b: 2,
        fn: fn,
    }

    // 事件中的this -> 指向绑定事件的元素
    document.onclick = fn;  // 点击 this -> document


    fn();      //  this -> window
    arr[3]();  // this ->  arr
    obj.fn();  // this  -> obj










</script>

</html>